package com.zdw.demo.entity;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.data.annotation.Id;

import java.io.Serializable;
import java.util.Date;

/**
 * 微信订单表 实体
 */
@Data
@TableName(value = "wechat_order")
public class WechatOrder implements Serializable {

    public static final String RKEY             = "rkey";
    public static final String OUT_TRADE_NO     = "out_trade_no";
    public static final String TRANSACTION_ID   = "transaction_id";
    public static final String TRADE_TYPE       = "trade_type";
    public static final String TRADE_STATE      = "trade_state";
    public static final String TRADE_STATE_DESC = "trade_state_desc";
    public static final String BANK_TYPE        = "bank_type";
    public static final String ATTACH           = "attach";
    public static final String SUCCESS_TIME     = "success_time";
    public static final String OPENID           = "openid";
    public static final String TOTAL            = "total";
    public static final String DESCRIPTION      = "description";
    public static final String TIME_EXPIRE      = "time_expire";
    public static final String CREATE_USER_ID   = "create_user_id";
    public static final String CREATE_USER_NAME = "create_user_name";
    public static final String CREATE_TIME      = "create_time";
    public static final String UPDATE_USER_ID   = "update_user_id";
    public static final String UPDATE_USER_NAME = "update_user_name";
    public static final String UPDATE_TIME      = "update_time";
    public static final String CODE_URL         = "code_url";
    public static final String MESSAGE          = "message";
    public static final String APP_FLAG         = "app_flag";

    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    private Integer rkey;

    /**
     * 商户订单号/内部订单号
     */
    private String out_trade_no;

    /**
     * 微信支付订单号
     */
    private String transaction_id;

    /**
     * 交易类型
     * <p>
     * 枚举值：
     * JSAPI：公众号支付
     * NATIVE：扫码支付
     * APP：APP支付
     * MICROPAY：付款码支付
     * MWEB：H5支付
     * FACEPAY：刷脸支付
     */
    private String trade_type;

    /**
     * 交易状态
     * <p>
     * 枚举值：
     * SUCCESS：支付成功
     * REFUND：转入退款
     * NOTPAY：未支付
     * CLOSED：已关闭
     * REVOKED：已撤销（仅付款码支付会返回）
     * USERPAYING：用户支付中（仅付款码支付会返回）
     * PAYERROR：支付失败（仅付款码支付会返回）
     */
    private String trade_state;

    /**
     * 交易状态描述
     */
    private String trade_state_desc;

    /**
     * 付款银行
     */
    private String bank_type;

    /**
     * 附加数据
     */
    private String attach;

    /**
     * 支付完成时间
     */
    private String success_time;

    /**
     * 用户标识(用户在直连商户appid下的唯一标识)
     */
    private String openid;

    /**
     * 总金额
     */
    private double total;

    /**
     * 商品描述
     */
    private String description;

    /**
     * 交易结束时间
     */
    private String time_expire;

    /**
     * 二维码链接
     */
    private String code_url;

    /**
     * 消息
     */
    private String message;

    /**
     * 回调应用标识(用于订单回调,跟pc_pub_callback_url中的一致)
     */
    private String app_flag;

    /**
     * 回调URL地址
     */
    @TableField(exist = false)
    private String pay_result_notify_url;

    /**
     * 是否回调通知到应用系统(0:否;1:是)
     */
    private Integer is_notify;

    /**
     * 创建人ID
     */
    private String create_user_id;

    /**
     * 创建人名称
     */
    private String create_user_name;

    /**
     * 创建时间
     */
    private Date create_time;

    /**
     * 修改人ID
     */
    private String update_user_id;

    /**
     * 修改人名称
     */
    private String update_user_name;

    /**
     * 修改时间
     */
    private Date update_time;


}
